iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0

https://ithelp.ithome.com.tw/upload/images/20200914/20129424BKqGzGi7pf.png

雜湊 Hash

*英文發音
首先來聽聽英文發音~。
Yes

名詞解釋

Hash是由Key、Value所組成的資料,設計者只要根據Key值就可以取得相對應的資料唷!
雖然中文翻譯很奇怪,不過大家都是這麼稱呼的,實務上使用都是講hash。

如何建立hash?

  1. 使用hash類別,new一個給他。
 vegan = Hash.new
  1. 使用大括號
vegan = {}

# EX:
vegan = { name: 'Lisa', age:8 }
p vegan -> { :name => "Lisa", :age => 8 }

ruby的hash有多種寫法?

  • 舊式:箭頭式。
# 字串寫法
vegan = { 'name' => "Lisa", 'age' => 8 }

# 符號寫法
vegan = { :name => "Lisa", :age => 8 }

但之前的章節說過使用「字串」的效能沒有「符號」好,所以這邊使用「符號」為主。

  • 新式:Ruby 1.9版本之後的新式寫法,設計為現代、較類似JSON風格的寫法,給設計者方便的一種寫法。
vegan = { name: 'Lisa', age:8 }

*該選擇哪一個版本的寫法呢?
Ans:事實上使用舊式或新式寫法都可以,文件格式統一即可。

如何取出key或value的值?

因為hash是key跟value的組合,所以可以單獨使用方法來印出。

p vegan.keys # 印出 [:name, :age]
p vegan.values # 印出 ["Lisa", 8]

印出來的是舊式的寫法,因為本質上是舊式的。

*索引號碼
若是之前學過別的程式語言會不習慣ruby的方式,在ruby要用對的key才能拿到value。

例如想要拿到kk

p vegan["name"] # 別的程式語言,印出 nil
p vegan[:name] # Ruby 印出 "Lisa"

修改key的值怎麼做

vegan = { name: 'Lisa', age:8 }
vegan[:name] = 'Jon'
p vegan # 印出來 { name:'Jon', age:8}

使用each,將資料一個個印出來。

vegan.each do |element|
  p vegan
end

多一個變數的寫法

vegan.each do |key, value|
  puts key
  puts value
end

更多的使用方法依樣可以參考手冊唷!
Hash 官方手冊


回家作業

請依官方手冊回答以下題目:

hash_one = { a:37 , b:42 }
hash_two = { a:55 , c:77 }
hash_three = { a:66 , d:89}

1. 請印出以下結果。
a is 37
b is 42

2. 請印出以下結果。
{ a:55, b:42, c:77}

3. 請印出以下結果
{ a:37, b:42, c:77, d:89 }

參考答案

1. hash.each do { |key, value| puts "#{key} is #{value}" }

2. hash_one.merge!(hash_two) 

3. hash_one.merge!(hash_two,hash_three){ |key, v1, v2| v1 }

參考資料


上一篇
Day 6 : Ruby中的「陣列、範圍」
下一篇
Day 8 : Ruby的「物件導向程式設計」
系列文
Ruby名詞解釋總匯14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言